#if !defined(__APPMESSAGE__)
#define __APPMESSAGE__
//连接类型的枚举
typedef enum
{
    CONN_NONE,
    CONN_BT,
    CONN_LORA,
    CONN_CAN
}ConnectionType;
//消息的结构体
typedef struct
{
    ConnectionType conn_type;
    char *payload;//id和msg组成
    int id_len;
    int msg_len;
}Message;

/** 
 * @brief 根据二进制数据初始化消息
 * @param binary 二进制数据
 * @param len 二进制数据的长度
 * @return Message* 消息结构体指针
*/

Message *app_message_initByBinary(char *binary,int len);

/** 
 * @brief 根据JSON数据初始化消息
 * @param json JSON数据
 * @param len JSON数据的长度
 * @return Message* 消息结构体指针
*/

Message *app_message_initByJSON(char *json);

/** 
 * @brief 将消息转换二进制数据
 * @param message 消息结构体指针
 * @param binary 接受二进制数据的指针
 * @param len 二进制数据的长度
 * @return int 返回转换后的二进制数据的长度
*/

int app_message_toBinary(Message *message,char *binary,int len);

/** 
 * @brief 将消息转换JSON数据
 * @param message 消息结构体指针
 * @param json 接受JSON数据的指针
 * @param len JSON数据的长度
 * @return int 返回转换后的JSON数据的长度
*/

int app_message_toJSON(Message *message,char *json,int len);



/** 
 * @brief 将消息释放
 * @param message 消息结构体指针
 * @return void
*/

void app_message_free(Message *message);


#endif // __APPMESSAGE__

